package com.briup.day10;

public class Test05 {
    public static void main(String[] args) {
        // 1、首先method()是一个方法，并且该方法直接被Outer2这个类调用，所以该方法定义成静态方法
        // 2、在method()后又通过.调用了show()方法，因为方法只能被类或对象调用，
        // 如果是静态方法那么可以被类调用，如果不是静态方法，那么只能被对象调用；
        // 在调用method()方法后调用show()方法，说明show方法应该是一个成员方法，
        // 又因为show()方法是定义在Inner接口中的抽象方法，所以method()方法的返回值必须是
        // Inner接口的实现类对象
        Outer2.method().show();
    }
}

interface Inner {
    void show();
}

/*class Hello implements Inner {
    @Override
    public void show() {
        System.out.println("hello world");
    }
}*/

class Outer2 {
    public static Inner method() {
        /*// new 接口名() 表示直接创建该接口实现类的对象
        return new Inner() {
            // 匿名内部类定义中，{}表示该匿名内部类的结构，可以在内部实现抽象方法
            @Override
            public void show() {
                System.out.println("Hello world!");
            }
        };*/
        // 这里叫做lambda表达式，可以简化匿名内部的书写
        return () -> System.out.println("hello world!");
    }
}